/***
 * 给你一个整数数组 nums ，请你找出数组中乘积最大的非空连续子数组（该子数组中至少包含一个数字），
 *
 * 并返回该子数组所对应的乘积。
 *
 * 测试用例的答案是一个 32-位 整数。
 *
 * 子数组 是数组的连续子序列。
 */
public class Test152 {

    public static void main(String[] args) {
         int[] num = {-2,6,-1};
        System.out.println(maxProduct(num));
    }
    public static int maxProduct(int[] nums) {
        int max = nums[0];
        int min = nums[0];
        int ans = nums[0];
        for (int i = 1; i < nums.length; i++) {
            int newMin = min;
            int newMax = max;
            max = Math.max(newMax*nums[i],Math.max(nums[i],nums[i]*newMin));
            min = Math.min(newMin*nums[i],Math.min(nums[i],newMax*nums[i]));
            ans = Math.max(ans,max);
        }
        return ans;
    }
}
